#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn = 1e5 + 10;
const ll mod = 1e9 + 7;
ll s[maxn], c[maxn], n, k;
ll t[maxn];

// 最大公约数
ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); }

// 检查函数，使用整数运算
bool check(ll x, ll y) {
  for (ll i = 1; i <= n; i++) {
    t[i] = c[i] * (s[i] * y - x);
  }
  sort(t + 1, t + n + 1);
  ll sum = 0;
  for (ll i = k + 1; i <= n; i++) {
    sum += t[i];
  }
  return sum > 0;
}

int main() {
  cin >> n >> k;
  for (ll i = 1; i <= n; i++) {
    scanf("%lld %lld", &s[i], &c[i]);
  }

  // 分数二分查找
  ll low_x = 1, low_y = 10000; // 下界 0/1
  ll high_x = 1e8, high_y = 1; // 上界 1e18/1

  while (abs(1.0 * low_x / low_y - 1.0 * high_x / high_y) > 1e-8) {
    // 更稳定的中间分数计算方法
    // 使用加权平均，避免数值过快增长
    ll mid_x = low_x + high_x;
    ll mid_y = low_y + high_y;

    // 约分中间分数
    ll g = gcd(mid_x, mid_y);
    mid_x /= g;
    mid_y /= g;

    if (check(mid_x, mid_y)) {
      low_x = mid_x;
      low_y = mid_y;
    } else {
      high_x = mid_x;
      high_y = mid_y;
    }
  }

  // 约分最终结果
  ll g = gcd(low_x, low_y);
  printf("%f \n",1.0* low_x /low_y);
  printf("%lld/%lld\n", low_x / g, low_y / g);
  return 0;
}